<!-- 表行 》 复选 -->

<template>
  <el-table-column v-bind="tableColumn" :selectable="checkSelectable" type="selection" :reserve-selection="!noKeep" />
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import mixRow from '../mixRow'

const name = 'RowCheckbox'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name,

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [mixRow],

  /**
   * 属性注册 (抽取以便查阅)
   */
  props: CORE.WEB[name],

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 主键键名
     */
    idKey() {
      const { parentWeb } = this
      return parentWeb.$props.idKey || 'id'
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 检查是否可选
     */
    checkSelectable(row) {
      const { disabled, grayed, idKey, bind, getValue } = this
      if (disabled) return false

      if (grayed.includes(row[idKey])) return false

      if (!bind) return true

      const value = getValue(row, bind)
      return !value
    },
  },
}
</script>
